#include "fingerprint.h"
#include <string.h>

// 指纹数据存储区
static FingerprintData fingerprints[MAX_FINGERPRINT_COUNT];
static uint16_t enrolledCount = 0;

// 初始化指纹模块
SystemStatus FP_Init(void)
{
    // 清空指纹数据
    memset(fingerprints, 0, sizeof(fingerprints));
    enrolledCount = 0;
    
    // TODO: 初始化指纹传感器硬件
    
    return SYSTEM_OK;
}

// 指纹录入
SystemStatus FP_Enroll(uint16_t *id)
{
    if (enrolledCount >= MAX_FINGERPRINT_COUNT) {
        return SYSTEM_FULL;
    }
    
    // 查找空闲位置
    uint16_t freeIndex;
    for (freeIndex = 0; freeIndex < MAX_FINGERPRINT_COUNT; freeIndex++) {
        if (!fingerprints[freeIndex].valid) {
            break;
        }
    }
    
    // TODO: 实现指纹采集和特征提取
    
    // 保存指纹数据
    fingerprints[freeIndex].id = freeIndex;
    fingerprints[freeIndex].privilege = 1;  // 默认普通用户权限
    fingerprints[freeIndex].register_time = 0;  // TODO: 添加实时时钟支持
    fingerprints[freeIndex].valid = true;
    
    *id = freeIndex;
    enrolledCount++;
    
    return SYSTEM_OK;
}

// 指纹删除
SystemStatus FP_Delete(uint16_t id)
{
    if (id >= MAX_FINGERPRINT_COUNT || !fingerprints[id].valid) {
        return SYSTEM_NOT_FOUND;
    }
    
    // 清除指纹数据
    memset(&fingerprints[id], 0, sizeof(FingerprintData));
    enrolledCount--;
    
    return SYSTEM_OK;
}

// 指纹匹配
SystemStatus FP_Match(uint16_t *id)
{
    // TODO: 实现指纹采集和特征匹配
    
    for (uint16_t i = 0; i < MAX_FINGERPRINT_COUNT; i++) {
        if (fingerprints[i].valid) {
            // TODO: 与存储的指纹特征进行比对
            // 如果匹配成功：
            // *id = i;
            // return SYSTEM_OK;
        }
    }
    
    return SYSTEM_NOT_FOUND;
}

// 获取已注册指纹数量
uint16_t FP_GetEnrolledCount(void)
{
    return enrolledCount;
}

// 清空所有指纹
SystemStatus FP_Clear(void)
{
    memset(fingerprints, 0, sizeof(fingerprints));
    enrolledCount = 0;
    return SYSTEM_OK;
}

// 指纹模块进入低功耗模式
SystemStatus FP_EnterLowPower(void)
{
    // TODO: 实现指纹传感器低功耗模式
    return SYSTEM_OK;
}

// 指纹模块退出低功耗模式
SystemStatus FP_ExitLowPower(void)
{
    // TODO: 实现指纹传感器唤醒
    return SYSTEM_OK;
} 